package br.ita.doacoes.domain.cadastrodoacoes;

import java.util.Date;

import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

import br.ita.doacoes.domain.controledoacoes.LocalArmazenamento;
import br.ita.doacoes.domain.voluntarios.TelefonePessoa;


/**
 * @author Helder
 */
@Entity
@Table(name = "item_movimentacao")
public class Item {
	private Integer id;
	private double quantidade;
	private Date validade;
	private TipoItem tipo;
	private Pacote pacote;
	private LocalArmazenamento local;

	@Id
	@Column(name = "id_item", nullable = false)
	@GeneratedValue(strategy = GenerationType.AUTO)
	public Integer getId() {
		return id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	@Basic
	@Column(name = "quantidade")
	public double getQuantidade() {
		return quantidade;
	}

	public void setQuantidade(double quantidade) {
		this.quantidade = quantidade;
	}

	@Temporal(TemporalType.DATE)
	@Column(name = "validade")
	public Date getValidade() {
		return validade;
	}

	public void setValidade(Date validade) {
		this.validade = validade;
	}

	@ManyToOne
	@JoinColumn(name = "id_item_tipo")
	public TipoItem getTipo() {
		return tipo;
	}

	public void setTipo(TipoItem tipo) {
		this.tipo = tipo;
	}

	@ManyToOne
	@JoinColumn(name = "id_movimentacao_pacote", referencedColumnName = "id_pacote")
	public Pacote getPacote() {
		return pacote;
	}

	public void setPacote(Pacote pacote) {
		this.pacote = pacote;
	}
	@ManyToOne
	@JoinColumn(name = "id_local", referencedColumnName = "id_local")
	public LocalArmazenamento getLocal() {
		return local;
	}

	public void setLocal(LocalArmazenamento local) {
		this.local = local;
	}
	
	 @Override
	    public boolean equals(Object object) {
	        // TODO: Warning - this method won't work in the case the id fields are not set
	        if (!(object instanceof Item)) {
	            return false;
	        }
	        Item other = (Item)object;
	        if ((this.id==null&&other.id==null)||(this.id != other.id && (this.id == null || !this.id.equals(other.id)))) return false;
	        return true;
	    }

	

}
